home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / CodeWarrior Lite / Metrowerks C⁄C++ Lite / Libraries / Runtime / Common Sources / NewMore.cp < prev   
Encoding:
Text File  |  1995-03-16  |  1.4 KB  |  50 lines  |  [TEXT/MMCC]

  1. /************************************************************************/
  2. /*    Project...:    Standard C++ Library                                    */
  3. /*    Name......:    NewMore.cp                                                */
  4. /*    Purpose...:    standard C++ library                                    */
  5. /*  Copyright.: ©Copyright 1993-95 by metrowerks inc                    */
  6. /************************************************************************/
  7.  
  8. #include <new.h>
  9. #include <Memory.h>
  10. #include <CPlusLib.h>
  11.  
  12. #ifdef __MC68K__
  13. #pragma a6frames on
  14. #endif
  15.  
  16. void (*new_handler)();
  17.  
  18. extern void (*set_new_handler (void (*new_new_handler) ())) ()
  19. {
  20.     void (*old_new_handler)() = new_handler;
  21.     new_handler = new_new_handler;
  22.     return old_new_handler;
  23. }
  24.  
  25. /************************************************************************/
  26. /*    Purpose..:     Allocate memory    (handle)                                */
  27. /*    Input....:    size of memory to allocate                                */
  28. /*    Return...:    handle to memory or 0L                                    */
  29. /************************************************************************/
  30. void *__new_hdl(size_t size)
  31. {
  32.     void *ptr;
  33.  
  34.     while((ptr=NewHandle(size))==NULL)
  35.     {
  36.         if(new_handler) new_handler(); else return(NULL);
  37.     }
  38.     return(ptr);
  39. }
  40.  
  41. /************************************************************************/
  42. /*    Purpose..:     Dispose memory (handle)                                    */
  43. /*    Input....:    handle to memory or 0L (no action if 0L)                */
  44. /*    Return...:    ---                                                        */
  45. /************************************************************************/
  46. void __del_hdl(void *hdl)
  47. {
  48.     if(hdl) DisposeHandle((Handle)hdl);
  49. }
  50.